package com.myString;

/**
 * @Author: linKe
 * @Date: 2022/1/2 1:15
 * @FileName: MyString
 * @version: 1.0
 * @Description: 字符串接口
 * 字符串抽象数据类型
 * 线性表中的数据元素类型为 char
 */
public interface MyString {
    /**
     * 长度
     * @return  结果
     */
    int length();

    /**
     * 返回第一个字符
     * @param i 字符下标
     * @return  结果
     */
    char charAt(int i);

    /**
     * 修改第i个下标的字符
     * @param i 字符下标
     * @param ch  字符的值
     */
    void setCharAt(int i,char ch);

    /**
     * 字符串截取
     * 子串
     * @param begin 开始下标
     * @param end   结束下标
     * @return  结果
     */
    MyString subString(int begin,int end);

    /**
     * 字符串拼接
     * @param ms   要拼接的字符串
     * @return  结果
     */
    MyString concat(MyString ms);

    /**
     * 字符串插入
     * @param i 字符下标
     * @param ms    要插入的字符串
     * @return  结果
     */
    MyString insert(int i,MyString ms);

    /**
     * 删除子串
     * @param begin 字符开始下标
     * @param end   字符结束下标
     * @return  结果
     */
    MyString delete(int begin,int end);

    /**
     * 模式匹配 返回最先匹配的下标
     * @param pattern   匹配的字符串
     * @return  结果
     */
    int indexOf(MyString pattern);

    /**
     * 删除所有匹配子串
     * @param pattern   匹配的字符串
     */
    void removeAll(MyString pattern);

    /**
     * 替换所有域pattern匹配的子串为ms
     * @param pattern   匹配的字符串
     * @param ms    替换的字符串
     */
    void replaceAll(MyString pattern,MyString ms);

}
